<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>addFunction</title>
<style type="text/css">
	body {background-color: white; color: black; font-family:sans-serif; font-size:medium;}
	a:link {color: #3300ff;}
	a:visited {color: #663399;}
	a:hover {color:#0099ff;}
	a:active {color: #0066cc;}
	a.button {text-decoration:none;}
	
	table.nav  {background-color: #dbddff;}
	table.body {margin-top:2ex; margin-bottom:2ex;}
	table.programlistingindent {margin-left:32px;}
	
	img { margin-bottom:0px; margin-top:0px;}
	tt {margin-left:0.5em; margin-right:0.5em; font-weight:lighter;}
	
	p {margin-top:0ex;}
	p.synopsis {margin-left:32px;}
	p.programlistingindent {margin-left:32px;}
	p.citetitle {margin-left:2em;}
	
	ul ul {list-style-type:square;}
	ul li p {margin-top:0ex; margin-bottom:.5ex; padding:0}
	ol li p {margin-top:0ex; margin-bottom:.5ex; padding:0}
	
	h1.reftitle {color:#a90000;}
	h1.reftitle {font-size:3.7ex; margin-top:0; margin-bottom:0; font-weight:bold}
	h1.title {color:black; font-size:4ex; margin-top:1ex; font-weight:bold}
	h2.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:3ex}
	h3.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2.5ex}
	h4.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2ex}
	h2 {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2.5ex}
	h3 {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2ex} 
	
	pre.programlisting {margin-left:32px;}
	pre.synopsis {margin-left:32px;}
	
	
	.categorytitle {margin-top:8px; padding-top:0px;}
	.categorylist {background-color: #e1e6f2;}
 	</style>
</head>
<body>
<a name="top_of_page"></a><p style="font-size:1px;"></p>
<h1 class="reftitle">addFunction</h1>
<h2>Purpose</h2>
<p>Attach function to a convex set.</p>
<h2>Syntax</h2>
<pre class="synopsis">Set = addFunction(Set,F,FuncName)</pre>
<pre class="synopsis">Set.addFunction(Set,F,FuncName)</pre>
<h2>Description</h2>
<p></p>
        Assign a <tt>Function</tt> object <tt>F</tt> to a convex set <tt>Set</tt> 
        under the name <tt>FuncName</tt>. The set represent the domain of the function.
        The string <tt>FuncName</tt> is obligatory and is used to identify the function
        from the list.
        
        Multiple functions can be assigned to a set, their names must be different. 
	<h2>Input Arguments</h2>
<table cellspacing="0" class="body" cellpadding="4" border="0" width="100%">
<colgroup>
<col width="31%">
<col width="69%">
</colgroup>
<tbody>
<tr valign="top">
<td><tt>Set</tt></td>
<td>
<p></p>Any object derived from the <tt>ConvexSet</tt> class, e.g. <tt>Polyhedron</tt>, <tt>YSet</tt>, ...<p>
	    		Class: <tt>ConvexSet</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>F</tt></td>
<td>
<p></p>Function or an array of functions to be assigned, given as objects derived form <tt>Function</tt> class.<p>
	    		Class: <tt>Function</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>FuncName</tt></td>
<td>
<p></p>A string or an cell array of strings that represent the name of the assigned function. Every function must
        have an unique name.<p>
	    		Class: <tt>struct</tt></p>
</td>
</tr>
</tbody>
</table>
<h2>Output Arguments</h2>
<table cellspacing="0" class="body" cellpadding="4" border="0" width="100%">
<colgroup>
<col width="31%">
<col width="69%">
</colgroup>
<tbody><tr valign="top">
<td><tt>Set</tt></td>
<td>
<p></p>Modified object of <tt>ConvexSet</tt> class that has a function stored under the <tt>Func</tt> property. <p>
	    		Class: <tt>ConvexSet</tt></p>
</td>
</tr></tbody>
</table>
<h2>Example(s)</h2>
<h3>Example 
				1</h3>Construct polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction1.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction1.png">
      <pre class="programlisting">P = Polyhedron(1, 1)</pre>
<pre class="programlisting">Polyhedron in R^1 with representations:
    H-rep (redundant)   : Inequalities   1 | Equalities   0
    V-rep               : Unknown (call computeVRep() to compute)
Functions : none
</pre>Define a function over <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction2.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction2.png"> this set as a <tt>QuadFunction</tt> object. <pre class="programlisting">F = QuadFunction(3,0,1) </pre>
<pre class="programlisting">Quadratic Function: R^1 -&gt; R^1
</pre>Assign a function <tt>F</tt> to this set <tt>P</tt> under name "f".<pre class="programlisting"> P.addFunction(F,'f') </pre>
<pre class="programlisting">Polyhedron in R^1 with representations:
    H-rep (redundant)   : Inequalities   1 | Equalities   0
    V-rep               : Unknown (call computeVRep() to compute)
Functions : 1 attached "f"
</pre>
<h3>Example 
				2</h3> Construct 2 polyhedra, <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction3.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction3.png">, <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction4.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction4.png"> 
      <pre class="programlisting"> P1 = Polyhedron(1,1); P2 = Polyhedron(-1,-1); </pre>
<pre class="programlisting"></pre> Put the polyhedra to one array. <pre class="programlisting"> P = [P1, P2]; </pre>
<pre class="programlisting"></pre> Define function <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction5.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction5.png"> that we want to associate to both functions. <pre class="programlisting"> F = Function(@(x)x/(x-1)) </pre>
<pre class="programlisting">Function: @(x)x/(x-1)
</pre> Add the function to each of the polyhedron in the array <tt>P</tt> and give it the name "f".<pre class="programlisting"> P.addFunction(F,'f') </pre>
<pre class="programlisting">Array of 2 polyhedra.
</pre>
<h3>Example 
				3</h3> Add two functions <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction6.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction6.png"> and <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction7.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction7.png"> to a circle <img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction8.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction8.png"> 
       Define the set using YALMIP <pre class="programlisting"> x = sdpvar(2,1); Set = YSet(x, [norm(x)&lt;=1]); </pre>
<pre class="programlisting"></pre> Define the functions<pre class="programlisting"> f1 = Function(@(x) sqrt(x(1)^2+x(2)^2+1)); f2 = Function(@(x) (x(1)-2)/(x(2)+3)); </pre>
<pre class="programlisting"></pre> Add these functions to the circle <tt>Set</tt> 
      <pre class="programlisting"> Set.addFunction(f1, 'polynomial')</pre>
<pre class="programlisting">YALMIP set in dimension 2.
Functions : 1 attached "polynomial"
</pre>
<pre class="programlisting"> Set.addFunction(f2, 'rational') </pre>
<pre class="programlisting">YALMIP set in dimension 2.
Functions : 2 attached "polynomial", "rational"
</pre> Plot the functions above the set <pre class="programlisting"> Set.fplot('polynomial') </pre>
<pre class="programlisting"></pre>
<p class="programlistingindent"><img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction_img_1.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction_img_1.png" width="60%"></p>
<pre class="programlisting"> Set.fplot('rational') </pre>
<pre class="programlisting"></pre>
<p class="programlistingindent"><img src="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction_img_2.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@ConvexSet/addfunction_img_2.png" width="60%"></p>
<h2>See Also</h2>
<a href="./convexset.html">convexset</a>, <a href="../../functions/@Function/function.html">function</a>, <a href="../../functions/@QuadFunction/quadfunction.html">quadfunction</a>, <a href="../../functions/@AffFunction/afffunction.html">afffunction</a>, <a href="./removefunction.html">removefunction</a><p></p>
<table class="nav" summary="Navigation aid" border="0" width="100%" cellpadding="0" cellspacing="0"><tr valign="top">
<td align="left" width="20">
<a href="../../../../../mpt.html" class="button">&#9664;</a>  </td>
<td align="left">mpt</td>
<td>  </td>
<td align="right">distance</td>
<td align="right" width="20"><a href="distance.html" class="button">&#9654;</a></td>
</tr></table>
<br><p>©  <b>2010-2013</b>     Martin Herceg: ETH Zurich,    <a href="mailto:herceg@control.ee.ethz.ch">herceg@control.ee.ethz.ch</a></p>
</body>
</html>
